﻿using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Linq;
using System.Text;
using DTC.Database;

namespace DTC.Validations
{
    class DrugValueValidation : ValidationRule
    {

        public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
        {
            string str = (string) value;
            string val = "";
            string acr = "";
            double multiplier = 1.0;
            for (int i = 0; i < str.Length; i++)
            {
                if (char.IsDigit(str[i]))
                    val += str[i];
                if (char.IsLetter(str[i]))
                    acr += str[i];
            }
            if(acr.Length == 0)
                return new ValidationResult(false, "Введеное значение не может быть переведенно в системные еденицы");
            multiplier = DTCIssueForm.SiParser(acr);
            if(multiplier == 0)
                    return new ValidationResult(false, "Введеное значение не может быть переведенно в системные еденицы");
            double dval;
            if(double.TryParse(val, out dval))
                return new ValidationResult(false, "Введеное значение не может быть переведенно в системные еденицы");
            dval = dval * multiplier;
            if (dval == 0)
                return new ValidationResult(false, "Введеное значение не может быть переведенно в системные еденицы");
            return new ValidationResult(true, null);
        }
        public static bool Validatable(string value)
        {
            string str = (string)value;
            string val = "";
            string acr = "";
            double multiplier = 1.0;
            for (int i = 0; i < str.Length; i++)
            {
                if (char.IsDigit(str[i]))
                    val += str[i];
                if (char.IsLetter(str[i]))
                    acr += str[i];
            }
            if (acr.Length == 0)
                return false;
            multiplier = DTCIssueForm.SiParser(acr);
            if (multiplier == 0)
                return false;
            double dval;
            if (double.TryParse(val, out dval))
                return false;
            dval = dval * multiplier;
            if (dval == 0)
                return false;
            return true;
        }
    }
}
